import { userAccountLogin } from '@/api/user'
const user = {
  namespaced: true, // 开启命名空间
  // 这里本来return 要求是一个完整的表达式
  // 如果不加() 不是有效的表达式

  // 直接写对象 vs 函数返回 有什么区别？
  // data(){ return {}} 复用 组件可以被用多次 保证组件各自都有自己独立的数据
  // 如果当前user.js模块被多个vuex实例复用 保证互相之间的数据不影响
  // props, 对象的默认值
  // props:{ default:()=>({})}
  state: () => ({
    profile: {}
  }),
  mutations: {
    setProfile (state, profile) {
      state.profile = profile
    },
    // 清空数据
    clearProfile (state) {
      state.profile = {} // 本地也会跟着一起被清空
    }
  },
  actions: {
    // 登录
    // ctx context 上下文对象 store commit dispatch getters state
    // setup(props,ctx) 组件的上下文 ctx.emit attrs slots
    async asyncLogin (ctx, { account, password }) {
      // 1. 调用登录接口
      const res = await userAccountLogin({ account, password })
      // 2. 把用户数据通过调用mutation函数存起来
      ctx.commit('setProfile', res.result)
      // 为啥不把把跳转写到这里？
      // vuex封装的和‘数据状态’相关的操作 不放置其它业务逻辑
    }
  },
  getters: {}
}

export default user
